package com.itheima.hashset;

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class Demo1 {

    public static void main(String[] args) {

        //Set系列集合
        //Set的常用方法基本都是Collection提供的，本身几乎没有特有的方法

        //HashSet集合的底层原理：基于哈希表实现的
        //JDK 8之前的哈希表：底层使用数组+链表
        //JDK 8之后的哈希表：底层使用数组+链表+红黑树

        //Set<String> set = new HashSet<>();      //无序、不重复、无索引（HashSet更常用）
        Set<String> set = new LinkedHashSet<>();    //有序、不重复、无索引
        set.add("hello");
        set.add("world");
        set.add("java");
        set.add("world");
        set.add("java");
        set.add("dog");
        System.out.println(set);

        //TreeSet集合：排序（默认按大小升序排序）、不重复、无索引
        Set<Integer> treeSet = new TreeSet<>();
        treeSet.add(30);
        treeSet.add(10);
        treeSet.add(10);
        treeSet.add(50);
        treeSet.add(40);
        treeSet.add(40);
        treeSet.add(20);
        System.out.println(treeSet);

        System.out.println("============================");

        String str1 = "hello";
        String str2 = "world";
        System.out.println(str1.hashCode());        //哈希值
        System.out.println(str1.hashCode());
        System.out.println(str2.hashCode());
        System.out.println(str2.hashCode());

    }
}
